package com.keshihao.oss.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.keshihao.oss.service.MsmService;
import com.keshihao.oss.utils.ConstantMsmUtils;
import com.keshihao.servicebase.exceptionhandler.TechException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.Map;

/**
 * @author Mr.Ke
 * @create 2020-06-16-21:26
 */
@Service
public class MsmServiceImpl implements MsmService {


    // 发送短信的方法
    @Override
    public boolean send(Map<String, Object> param, String phone) {

      if(StringUtils.isEmpty(phone)) return false;

      DefaultProfile profile =
        DefaultProfile.getProfile("default", ConstantMsmUtils.KEY_ID, ConstantMsmUtils.KEY_SECRET);
      IAcsClient client = new DefaultAcsClient(profile);

      // 设置相关固定的参数
      CommonRequest request = new CommonRequest();
      //request.setProtocol(ProtocolType.HTTPS);
      request.setMethod(MethodType.POST);
      request.setDomain("dysmsapi.aliyuncs.com");
      request.setVersion("2017-05-25");
      request.setAction("SendSms");

      // 设置发送相关的参数
      request.putQueryParameter("PhoneNumbers",phone);
      // 优佳护在线教育网站
      request.putQueryParameter("SignName","优佳护在线教育网站");
      // 模板SMS_193247792
      request.putQueryParameter("TemplateCode", "SMS_193247792");
      request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));

      try {

        // 最终发送
        CommonResponse commonResponse = client.getCommonResponse(request);
        boolean success = commonResponse.getHttpResponse().isSuccess();
        return success;
      } catch (Exception e) {
        e.printStackTrace();
        throw new TechException(20001,"短信验证码发送失败");
      }

    }

}
